#include "widget.h"
#include "ui_widget.h"

#include <thread>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    // ui->lcdNumber->display(10);
    // int value = ui->lcdNumber->intValue();
    // while(true) {
    //     // 先休眠1s
    //     std::this_thread::sleep_for(std::chrono::seconds(1));
    //     if(value <= 0) {
    //         break;
    //     }
    //     ui->lcdNumber->display(--value);
    // }

    // Qt的机制是主线程专门维护界面,为了线程安全,禁止其他进程进行修改界面
    // 测试
    std::thread thread1([this]() {
        this->ui->lcdNumber->intValue();
        int value = ui->lcdNumber->intValue();
        while(true) {
            std::this_thread::sleep_for(std::chrono::seconds(1));
            if(value <= 0) {
                break;
            }
            ui->lcdNumber->display(--value);
        }
    });

    // 侧面说明了槽函数一定是主线程进行调用的
    /*
    *****************************************
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        Widget w;
        w.show();
        return a.exec(); // a.exec()--使主线程进行事件循环
    }
    ******************************************
    */
}

Widget::~Widget()
{
    delete ui;
}
